﻿using CMS.BaseEntity;
using CMS.BusinessLogic;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Threading;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace CMS.UserControl
{
    public partial class CheckQuantity : System.Web.UI.UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                BindSectionList();
                BindCategoryList();
                BindProductList();
            }
        }

        SectionLogic sLogic = new SectionLogic();
        CategoryLogic cLogic = new CategoryLogic();
        ProductLogic pLogic = new ProductLogic();
        protected void BindSectionList()
        {
            DataTable dt = sLogic.GetListSection();
            ddlSection.DataSource = dt;
            ddlSection.DataTextField = "SectionName";
            ddlSection.DataValueField = "SectionId";
            ddlSection.DataBind();
            ddlSection.Items.Insert(0, new ListItem("", "-1"));
        }

        protected void BindCategoryList()
        {
            DataTable dt = cLogic.GetListCategory();
            ddlCategory.DataSource = dt;
            ddlCategory.DataTextField = "CategoryName";
            ddlCategory.DataValueField = "CategoryId";
            ddlCategory.DataBind();
            ddlCategory.Items.Insert(0, new ListItem("", "-1"));
        }

        protected void ddlSection_SelectedIndexChanged(object sender, EventArgs e)
        {
            Thread.Sleep(TimeSpan.FromSeconds(2));
            Category cate = new Category();
            cate.SectionId = int.Parse(ddlSection.SelectedValue.ToString());
            DataTable dt1 = cLogic.GetListCateBySection(cate);
            ddlCategory.DataSource = dt1;
            ddlCategory.DataTextField = "CategoryName";
            ddlCategory.DataValueField = "CategoryId";
            ddlCategory.DataBind();

            Product prd = new Product();
            prd.SectionId = int.Parse(ddlSection.SelectedValue.ToString());
            DataTable dt2 = pLogic.GetBySection(prd);
            if (dt2.Rows.Count > 0)
            {
                grvProduct.DataSource = dt2;
                grvProduct.DataBind();
                lblMessage.Text = string.Empty;
            }
            else
            {
                //lblMessage.Visible = true;
                grvProduct.DataSource = null;
                grvProduct.DataBind();
                lblMessage.CssClass = "message";
                lblMessage.Text = "   Không có sản phẩm nào trong mục này!";
            }
        }

        protected void BindProductList()
        {
            DataTable dt = pLogic.GetList();
            grvProduct.DataSource = dt;
            grvProduct.DataBind();
        }

        protected void btnActive_Click(object sender, EventArgs e)
        {

        }

        protected void ddlCategory_SelectedIndexChanged(object sender, EventArgs e)
        {
            Product prd = new Product();
            prd.CategoryId = int.Parse(ddlCategory.SelectedValue.ToString());
            DataTable dt = pLogic.GetByCategory(prd);
            if (dt.Rows.Count > 0)
            {
                grvProduct.DataSource = dt;
                grvProduct.DataBind();
                lblMessage.Text = string.Empty;
            }
            else
            {
                grvProduct.DataSource = null;
                grvProduct.DataBind();
                lblMessage.CssClass = "message";
                lblMessage.Text = "Không có sản phẩm nào trong mục này!";
            }
        }

        protected void btnFilter_Click(object sender, EventArgs e)
        {
            Product prd = new Product();
            prd.CategoryId = int.Parse(ddlCategory.SelectedValue.ToString());
            prd.SectionId = int.Parse(ddlSection.SelectedValue.ToString());
            int enable = int.Parse(ddlStatus.SelectedValue.ToString());

            if (prd.SectionId == -1 && prd.CategoryId == -1)
            {
                if (enable == -1)
                {
                    if (txtName.Text == "")
                    {
                        if (txtQuantity.Text == "")
                        {
                            DataTable dt = pLogic.GetList();
                            if (dt.Rows.Count > 0)
                            {
                                grvProduct.DataSource = dt;
                                grvProduct.DataBind();
                                lblMessage.Text = string.Empty;
                            }
                            else
                            {
                                grvProduct.DataSource = null;
                                grvProduct.DataBind();
                                lblMessage.CssClass = "message";
                                lblMessage.Text = "Không tìm thấy sản phẩm nào phù hợp !";
                            }
                        }
                        else
                        {
                            try
                            {
                                prd.Quantity = int.Parse(txtQuantity.Text);
                            }
                            catch (Exception)
                            {
                                prd.Quantity = 0;
                            }
                            DataTable dt = pLogic.FindAllByQuantity(prd);
                            if (dt.Rows.Count > 0)
                            {
                                grvProduct.DataSource = dt;
                                grvProduct.DataBind();
                                lblMessage.Text = string.Empty;
                            }
                            else
                            {
                                grvProduct.DataSource = null;
                                grvProduct.DataBind();
                                lblMessage.CssClass = "message";
                                lblMessage.Text = "Không tìm thấy sản phẩm nào phù hợp !";
                            }
                        }
                    }
                    else
                    {
                        prd.Name = txtName.Text;
                        if (txtQuantity.Text == "")
                        {
                            DataTable dt = pLogic.FindAllByName(prd);
                            if (dt.Rows.Count > 0)
                            {
                                grvProduct.DataSource = dt;
                                grvProduct.DataBind();
                                lblMessage.Text = string.Empty;
                            }
                            else
                            {
                                grvProduct.DataSource = null;
                                grvProduct.DataBind();
                                lblMessage.CssClass = "message";
                                lblMessage.Text = "Không tìm thấy sản phẩm nào phù hợp !";
                            }
                        }
                        else
                        {
                            try
                            {
                                prd.Quantity = int.Parse(txtQuantity.Text);
                            }
                            catch (Exception)
                            {
                                prd.Quantity = 0;
                            }
                            DataTable dt = pLogic.FindAllByNameQuantity(prd);
                            if (dt.Rows.Count > 0)
                            {
                                grvProduct.DataSource = dt;
                                grvProduct.DataBind();
                                lblMessage.Text = string.Empty;
                            }
                            else
                            {
                                grvProduct.DataSource = null;
                                grvProduct.DataBind();
                                lblMessage.CssClass = "message";
                                lblMessage.Text = "Không tìm thấy sản phẩm nào phù hợp !";
                            }
                        }
                    }
                }
                else
                {
                    if (enable == 1)
                        prd.Enable = true;
                    else if (enable == 0)
                        prd.Enable = false;
                    if (txtName.Text == "")
                    {
                        if (txtQuantity.Text == "")
                        {
                            DataTable dt = pLogic.FindByEnable(prd);
                            if (dt.Rows.Count > 0)
                            {
                                grvProduct.DataSource = dt;
                                grvProduct.DataBind();
                                lblMessage.Text = string.Empty;
                            }
                            else
                            {
                                grvProduct.DataSource = null;
                                grvProduct.DataBind();
                                lblMessage.CssClass = "message";
                                lblMessage.Text = "Không tìm thấy sản phẩm nào phù hợp !";
                            }
                        }
                        else
                        {
                            try
                            {
                                prd.Quantity = int.Parse(txtQuantity.Text);
                            }
                            catch (Exception)
                            {
                                prd.Quantity = 0;
                            }
                            DataTable dt = pLogic.FindByEnableQuantity(prd);
                            if (dt.Rows.Count > 0)
                            {
                                grvProduct.DataSource = dt;
                                grvProduct.DataBind();
                                lblMessage.Text = string.Empty;
                            }
                            else
                            {
                                grvProduct.DataSource = null;
                                grvProduct.DataBind();
                                lblMessage.CssClass = "message";
                                lblMessage.Text = "Không tìm thấy sản phẩm nào phù hợp !";
                            }
                        }
                    }
                    else
                    {
                        prd.Name = txtName.Text;
                        if (txtQuantity.Text == "")
                        {
                            DataTable dt = pLogic.FindByEnableName(prd);
                            if (dt.Rows.Count > 0)
                            {
                                grvProduct.DataSource = dt;
                                grvProduct.DataBind();
                                lblMessage.Text = string.Empty;
                            }
                            else
                            {
                                grvProduct.DataSource = null;
                                grvProduct.DataBind();
                                lblMessage.CssClass = "message";
                                lblMessage.Text = "Không tìm thấy sản phẩm nào phù hợp !";
                            }
                        }
                        else
                        {
                            try
                            {
                                prd.Quantity = int.Parse(txtQuantity.Text);
                            }
                            catch (Exception)
                            {
                                prd.Quantity = 0;
                            }
                            DataTable dt = pLogic.FindByEnableNameQuantity(prd);
                            if (dt.Rows.Count > 0)
                            {
                                grvProduct.DataSource = dt;
                                grvProduct.DataBind();
                                lblMessage.Text = string.Empty;
                            }
                            else
                            {
                                grvProduct.DataSource = null;
                                grvProduct.DataBind();
                                lblMessage.CssClass = "message";
                                lblMessage.Text = "Không tìm thấy sản phẩm nào phù hợp !";
                            }
                        }
                    }
                }
            }
            else
            {
                //if (enable == -1)
                //{
                //    if (txtName.Text == "")
                //    {
                //        if (txtQuantity.Text == "")
                //        {
                //            DataTable dt = pLogic.GetList();
                //            if (dt.Rows.Count > 0)
                //            {
                //                grvProduct.DataSource = dt;
                //                grvProduct.DataBind();
                //                lblMessage.Text = string.Empty;
                //            }
                //            else
                //            {
                //                grvProduct.DataSource = null;
                //                grvProduct.DataBind();
                //                lblMessage.CssClass = "message";
                //                lblMessage.Text = "Không tìm thấy sản phẩm nào phù hợp !";
                //            }
                //        }
                //}
                //else
                //{

                //}
            }
        }
    }
}